package com.learn.pojo;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.Fastjson2TypeHandler;
import com.learn.enums.GenderEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.Map;

/**
 * @author DJJ_F
 * @version 1.0
 * @date 2025/03/03
 * @description 通用枚举的测试
 * JSON 字段类型处理器
 * 字段自动填充
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
// autoResultMap 查询时将json字符串封装为Map集合
@TableName(value = "emp_table", autoResultMap = true)
public class Emp {
    @TableId("eid")
    private Long id;
    @TableField("emp_name")
    private String name;
    private Integer age;
    private GenderEnum gender;

    /**
     * 逻辑删除
     */
    @TableField("is_deleted")
    @TableLogic
    private Integer deleted;

    /**
     * 使用Fastjson2 JSON 字段类型处理器
     * 需要导入依赖
     */
    @TableField(typeHandler = Fastjson2TypeHandler.class)
    private Map<String, String> content;

    /**
     * fill 表示自动填充的策略
     * FieldFill.INSERT_UPDATE 表示添加和更改时都填充
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 乐观锁，版本号，需要配置拦截器
     */
    @Version
    private Integer version;
}
